
import java.util.HashMap;

import org.orm.PersistentException;
import com.google.gson.Gson;
import org.orm.PersistentTransaction;




/**
 * @author Yuri
 *
 */
public class ServicioWebCliente {
	
	
/**
 * Metodo que verificara si el dni ingresado esta dentro del sistema
 * @param dni identificador paciente
 * @return true si el identificador existe. False si esque no se encuentra.
 */
public boolean verificarPaciente(String dni){
	boolean res = true;
	
	try {
		Paciente paciente = PacienteDAO.getPacienteByORMID(dni);
		if(paciente == null){
			res = false;
		}
	} catch (PersistentException e) {
		// TODO Auto-generated catch block
		res = false;
		e.printStackTrace();
	}
	
	
	return res;
}

/**
 * Metodo que permite agregar pacientes a la base de datos bd_baby_monitor
 * @param dni identificador
 * @param nombre nombre paciente
 * @param apellido apellido paciente
 * @param edad edad paciente
 * @return texto estado de si la ejecucion a terminado correctamente.
 */
public String agregarPaciente(String dni, String nombre, String apellido, int edad){
    String res = "Paciente agregado con exito";
	
	try {
	 //PersistentTransaction transaccion = BasededatosPersistentManager.instance().getSession().beginTransaction();
	 	PersistentTransaction transaccion = BasededatosPersistentManager.instance().getSession().beginTransaction();
		try{
	 		//se crea la instacia para crear a un paciente
	 		Paciente crearPaciente = PacienteDAO.createPaciente();
	 		crearPaciente.setDni_paciente(dni);
	 		crearPaciente.setNombre_pac(nombre);
	 		crearPaciente.setApellido_pac(apellido);
	 		crearPaciente.setEdad_paciente(edad);
	 		//guarda paciente
	 		PacienteDAO.save(crearPaciente);
	 		transaccion.commit();
	 	}catch (Exception e) {
			// TODO: handle exception
	 		transaccion.rollback();
		}
	} catch (PersistentException e) {
		// TODO Auto-generated catch block
		res = "No se a podido agregar a un paciente";
		e.printStackTrace();
	}
	
	return res;
}

//PARA LOS CUSTIONARIOS


/**
 * Metodo que genera las encuestas segun la opcion digitada por el usuario
 * @param opcion opciones pre natal=1, durante =2; post natal=3 
 * @return json formado con los parametros
 */
public String obtenerEncuestas(int opcion){
	String out="";
	Gson jSon = new Gson();
	HashMap<String, Object> preguntasCuestionario = new HashMap<String,Object>();
	CuestionarioPregunta cuestionarioPregunta = new CuestionarioPregunta();
	switch (opcion) {
	case 1:
		preguntasCuestionario.put("Cuestionario", "PreNatal");
		preguntasCuestionario.put("Preguntas", cuestionarioPregunta.obtenerEncuesta(1));
		out = jSon.toJson(preguntasCuestionario);
		break;
	case 2:
		preguntasCuestionario.put("Cuestionario", "Parto");
		preguntasCuestionario.put("Preguntas", cuestionarioPregunta.obtenerEncuesta(2));
		out = jSon.toJson(preguntasCuestionario);
		break;
	case 3:
		preguntasCuestionario.put("Cuestionario", "PostNatal");
		preguntasCuestionario.put("Preguntas", cuestionarioPregunta.obtenerEncuesta(3));
		out = jSon.toJson(preguntasCuestionario);
		break;
	default:
		break;
	}
	
	return out;	
}


/**
 * Metodo que agrega una respuesta asociada a una pregunta.
 * @param dni identificador persona
 * @param codPregunta identificador de la pregunta
 * @param respuestaDetalle respuesta otorgada por la paciente
 * @return variable de texto que regresa si la Respuesta agregada con exito en caso verdadero. 
 */
public String establecerPacienteRespuesta(String dni,int codPregunta,String respuestaDetalle)
{
	String res = "Respuesta agregada con exito";

	try {
	 PersistentTransaction transaccion = BasededatosPersistentManager.instance().getSession().beginTransaction();
	 	try{
	 		//se crea la instacia para crear a un paciente
	 		Pregunta adjuntarPregunta = PreguntaDAO.getPreguntaByORMID(codPregunta);
	 		Respuesta crearRespuesta = RespuestaDAO.createRespuesta();
	 		crearRespuesta.setDescripcion(respuestaDetalle);
	 		crearRespuesta.setPregunta(adjuntarPregunta);
	 		//guarda paciente
	 		RespuestaDAO.save(crearRespuesta);
	 		transaccion.commit();
	 	}catch (Exception e) {
			// TODO: handle exception
	 		transaccion.rollback();
		}
	} catch (PersistentException e) {
		// TODO Auto-generated catch block
		res = "No se a podido agregar la respuesta";
		e.printStackTrace();
	}
	
	
	return res;
}

}
